웹 플롯을 위한 bokeh 패키지 소개

Bokeh ( http://bokeh.pydata.org )는 웹사이트에서 현대적인 웹 기반 인터랙티브 플롯을 제공하는 것을 목표로 만든 파이썬 라이브러리이다.

여기에서는 "파이썬을 활용한 금융분석(Python for Finance) 제14장의 예제 코드를 기반으로 bokeh 패키지의 기능을 간단히 소개한다

자료의 준비

우선 예제로 사용할 주식 가격 자료를 인터넷에서 다운받는다.


In [1]:
import urllib

In [2]:
url = 'http://ichart.yahoo.com/table.csv?s=MSFT&a=0&b=1&c=2009'
data = pd.read_csv(url, parse_dates=['Date'])

Bokeh 라이브러리 임포트

Bokeh는 원래 정적인 웹사이트로 렌더링 할 html 파일을 출력하는 것을 목표로 한다. 따라서 출력을 저장할 html 파일 패스를 지정해야 한다. 만약 주피터 노트북에서 작업한다면 다음과 같이 output_notebook 명령을 실행해야 한다.


In [3]:
import bokeh.plotting as bp

In [4]:
# 주피터 노트북이 아닌 파일로 출력하는 경우
# bp.output_file("../images/msft_1.html", title="Bokeh Example (Static)")

In [5]:
# 주피터 노트북에서 실행하여 출력하는 경우
bp.output_notebook()


Loading BokehJS ...

플롯팅

이제 플롯을 위한 준비 작업을 완료하였다. 우선 figure 명령으로 Figure 클래스 객체를 생성해야한다. 이를 p라는 변수에 저장하자.


In [6]:
p = bp.figure(title='Historical Stock Quotes', # 플롯 제목
              x_axis_type ='datetime',  # x 축은 날짜 정보
              tools = '')

다음으로 Figure 클래스의 메서드를 호출하여 실제 플롯 객체를 추가한다. 우선 라인 플롯을 그리기 위해 line 메서드을 실행한다.


In [7]:
p.line(
    data['Date'],  # x 좌표
    data['Close'], # y 좌표
    color ='#0066cc',  # 선 색상
    legend ='MSFT',  # 범례 이름
)


Out[7]:
<bokeh.models.renderers.GlyphRenderer at 0x7f4c4af2c710>

이제 show 명령어를 호출하여 실제 차트를 렌더링 한다.


In [8]:
bp.show(p)


Out[8]:

<Bokeh Notebook handle for In[8]>

상호작용 툴 추가하기

만약 차트에 상호작용을 위한 툴을 추가하고 싶다면 Figure 객체 생성시 tools 인수를 설정한다.


In [10]:
p = bp.figure(title='Historical Stock Quotes', # 플롯 제목
              x_axis_type ='datetime',  # x 축은 날짜 정보
              tools = 'pan, wheel_zoom, box_zoom, reset, previewsave')
p.line(
    data['Date'],  # x 좌표
    data['Close'], # y 좌표
    color ='#0066cc',  # 선 색상
    legend ='MSFT',  # 범례 이름
)
bp.show(p)


Out[10]:

<Bokeh Notebook handle for In[10]>